der BIT Befehl ist irgendwie mystisch… wozu genau braucht man den eigentlich? Also welche zwingend praktischen Anwendung gibt es, wo man BIT einsetzen muss??
BIT Befehl
BIT ist sehr praktisch wenn man nur checken möchte ob bit 7 oder 6 einen gewissen Wert haben oder ob das AND Ergebnis mit dem Wert im Akkumulator 0 ist oder nicht - ohne den Wert im Akkumulator zu ändern.
Es ist quasi ein AND Befehl mit Zusatzfunktion (N und V werden auf Bit 7/6 des operands gesetzt) ohne den Nachteil dass der Akkumulator dadurch verändert wird.
Ich hab den Befehl oft verwendet um zB bit 7/6 eines Hardware-Registers zu checken.
Auch sehr praktisch: BIT ZP-Adresse bzw BIT 16bit-Adresse kann man verwenden um fast ohne Nebenwirkungen (bis auf die Flags) 1 oder 2 bytes Code zu überspringen ohne ein BEQ/BNE/JMP zu brauchen (spart Speicherplatz).
zB:
... irgendeine Routine die bei fehler JMP/BEQ/BNE ERROR macht
LDA #0
.BYTE $2C
ERROR:
LDA #1
RTS
Wenn die Routine normal durchläuft macht sie "LDA #0", "BIT $01A9", "RTS" - bei einem Fehler aber "LDA #1", "RTS" - somit kriegt man einfach konsistente Fehlercodes als Returnwert in A.
Das kann man natürlich auch weiter kaskadieren, siehe zB meinen Highspeed SIO code https://github.com/HiassofT/highspeed-sio/blob/master/hisiocode-check.src#L80-L93
so long,
Hias